package ar.edu.utn.frba.disenio.aterrizar.aerolineas;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import ar.edu.utn.frba.disenio.aterrizar.fechas.Fecha;
import ar.edu.utn.frba.disenio.aterrizar.fechas.Latinoamericano;

public class Vuelo {
	
	public String codigo;
	public double valor;
	public String clase;
	public String ubicacion;
	public String estado;
	public String origen;
	public String destino;
	public String horaSalida;
	public String horaLlegada;
	public Fecha fechaSalida;
	public Fecha fechaLlegada;
	public long duracion;	
	
	public Vuelo(String[] unVuelo) {
		Latinoamericano latin = new Latinoamericano();
		
		this.codigo = unVuelo[0];
        this.valor = Double.parseDouble(unVuelo[1]);
        this.clase = unVuelo[2];
        this.ubicacion = unVuelo[3];
        this.estado = unVuelo[4];
        this.horaSalida = unVuelo[6];
        this.horaLlegada = unVuelo[7];
        String fecha1 = (unVuelo[10]+" "+this.horaSalida);
        String fecha2 = (unVuelo[11]+" "+this.horaLlegada);
        this.setDuracion(fecha1, fecha2);
        this.origen = unVuelo[8];
        this.destino = unVuelo[9];
        this.fechaSalida = latin.parsear(unVuelo[10]);
        this.fechaLlegada = latin.parsear(unVuelo[11]);        
	}
	
	public Vuelo() {
		super();
	}

	public void aplicarRecargo(double recargoAerolinea, int recargoUsuario){
		double precio = new Double(this.getValor()*recargoAerolinea);
		this.valor = (precio + recargoUsuario);
	}
	
	public boolean esSuperOferta(Vuelo unVuelo){
		return ((this.getClase().equals("P") && this.getValor() < 8000.00) ||
			(this.getClase().equals("E") && this.getValor() < 4000.00));			
	}

	public void setDuracion(String fecha1, String fecha2){
		
		try{
			SimpleDateFormat formato = new SimpleDateFormat("dd/mm/yyyy hh:mm");
			Date unDate = formato.parse(fecha1);
			Date otroDate = formato.parse(fecha2);
			long salidaUnVuelo = unDate.getTime();
			long llegadaUnVuelo = otroDate.getTime();
			this.duracion = (llegadaUnVuelo - salidaUnVuelo )/(1000*60);
        }catch(ParseException e)
        {
        System.out.println("No se pudo sacar hora");
        }
	}	
	
	
	///////////////
	
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public double getValor() {
		return valor;
	}
	public void setValor(double valor) {
		this.valor = valor;
	}
	public String getClase() {
		return clase;
	}
	public void setClase(String clase) {
		this.clase = clase;
	}
	public String getUbicacion() {
		return ubicacion;
	}
	public void setUbicacion(String ubicacion) {
		this.ubicacion = ubicacion;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	
	public ArrayList<Vuelo> getVuelos()	{
		return null;
	}

	////////////////
}
